Apache 2
の編集
https://oku.edu.mie-u.ac.jp:443/~okumura/linux/?Apache%202
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
*Apache 2 [#r5421e34] 古い [[Apache 1:http://oku.edu.mie-u.ac.jp/~okumura/networking/apache.html]] のページをとりあえず更新したものです。 **News [#n5e427e3] - Apache 2.2.8 が出ました。 **はじめに [#o8455f31] Apache はたいていの Linux などのディストリビューションに入っているはずですので,ソースからコンパイルする必要はありません。 ソースからのコンパイルは,最新版を追い求める人だけお試しください。 **ソースからのコンパイル [#kc55641c] ソースコードは [[The Apache Software Foundation:http://www.apache.org/]] の [[The Apache HTTP Server Project:http://httpd.apache.org/]] で配布されています。ダウンロードは [[適当なミラー:http://httpd.apache.org/download.cgi]] から行いましょう(例えば [[RingServer:http://www.dnsbalance.ring.gr.jp/]] の [[/pub/net/apache/httpd/:http://www.dnsbalance.ring.gr.jp/pub/net/apache/httpd/]] にもミラーされています)。 Apache にはバージョン 1.x のものと 2.x のものがありますが,ここでは 2.x のもの(httpd-2.X.YY.tar.gz といったファイル名)を使います。 すでに古い Apache がインストールされているなら消しておきます。 /etc/rc.d/init.d/httpd stop rpm -e apache mod_ssl あらかじめユーザ www,グループ www を作っておきます(どんな名前でもかまいません。 最近の Vine Linux では apache/apache というユーザ/グループがあるようですのでそれを流用するのがいいでしょう)。 :/etc/passwd|www:x:98:98:www:/:/bin/false :/etc/group|www:x:98: Vine Linux 4.1では apt-get install openssl-devel しておきます。 まずソースを展開してコンパイルします。 後で PHP を使うために Dynamic Shared Object の設定 --enable-so をしておきます。 cd httpd-2.2.4 CFLAGS="-O2" ./configure --enable-so --enable-auth-digest --enable-dav --enable-ssl --enable-rewrite make make install デフォルトのインストール場所は /usr/local/apache2 以下になります(Apache 1.x では /usr/local/apache でした)。 場所を変えるには configure に --prefix=/opt/local/apache2 のようなオプションを付けます。 **httpd.conf の設定 [#i65396f0] 次に,/usr/local/apache2/conf にある httpd.conf を編集します。 User daemon Group daemon となっているところは,前にも書いたように,できれば www あるいは apache といったユーザ/グループを作って, User www Group www などとします。 ServerAdmin は適当なメールアドレスにします。 例えば ServerAdmin webmaster@example.ac.jp として,webmaster を管理人の別名として登録するといいでしょう。 ServerName はホスト名です。たとえば ServerName www.example.ac.jp:80 とします。 実験的に自分のマシンで動かすなら 127.0.0.1 でもかまいません。 <Directory "/usr/local/apache2/htdocs"> から </Directory> の中で一般的な設定をします。最初は Options Indexes FollowSymLinks AllowOverride None となっていますが,自由度を最大限に上げるには Options All AllowOverride All とします。 All に加えて MultiViews オプションも付けると content negotiation を自動で行いますが,パフォーマンスはかなり落ちます。 この用途には .var ファイルを使うほうがいいでしょう。 AllowOverride を All にするのは,後で .htaccess で自由に設定を変えるためです。 次の DirectoryIndex index.html となっているところは,たとえば DirectoryIndex index.html index.htm index.php index.cgi index.pl index.rb index.html.var といった具合にすると,index.html 以外のファイル名でも省略できるので,便利です。 <FilesMatch "^\.ht"> Order allow,deny Deny from all </FilesMatch> は見せないファイルの設定です。同様に <FilesMatch "~$"> Order allow,deny Deny from all </FilesMatch> などとしておくとEmacsのバックアップファイルが見えてしまうことを防ぎます。 CustomLog logs/access_log common をコメントアウトして,代わりに CustomLog logs/access_log combined とするとログファイルにuser agentやrefererの情報も入ります。 MIME type の不明なバイナリファイルがブラウザに表示されてしまうことを防ぐために DefaultType text/plain を DefaultType application/octet-stream にしておくといいかもしれません(場合によります)。 CGIを使うなら, #AddHandler cgi-script .cgi は,コメントを外して,ついでに Perl や Ruby のために次のようにしておくと便利です。 AddHandler cgi-script .cgi .pl .rb PHP を使うなら,PHP インストール時に httpd.conf が書き換えられて次のいずれかの行が追加されるはずです。 LoadModule php4_module modules/libphp4.so LoadModule php5_module modules/libphp5.so さらに次の2行がなければ追加しておきます。 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 言語関係は 2.2 では extra/httpd-languages.conf に移りました。 ここでは LanguagePriority リストの先頭に ja を持っていきます。 なお,古い Apache では次の行がありましたが,これはコメントアウトしておかないと文字化けが起こります。 AddDefaultCharset ISO-8859-1 **実行 [#jfe0991b] 起動,終了,再起動はそれぞれ /usr/local/apache2/bin/apachectl -k start /usr/local/apache2/bin/apachectl -k graceful-stop /usr/local/apache2/bin/apachectl -k graceful です。 /etc/rc.d/rc.local の下のほうに /usr/local/apache2/bin/apachectl -k start と書いておいてもいいのですが,今のVineなどRed Hat系の方式では次のようにします。 cp build/rpm/httpd.init /etc/rc.d/init.d/httpd ここで /etc/rc.d/init.d/httpd の中のパス名を適宜直します。例えば httpd.pid は /usr/local/apache2/logs の中に入ります。 /sbin/chkconfig --level 345 httpd on /etc/rc.d/init.d/httpd start /etc/logrotate.d/apache2 は /var/log/httpd と /var/run を /usr/local/apache2/logs に直しておきます。 **SSL [#m73dd07e] SSL対応にするには,configure に --enable-ssl を付けます。 openssl,openssl-devel がインストールされていなければなりません。 cd /usr/local/apache2/conf ln -s /etc/httpd/conf/ssl.crt . ln -s /etc/httpd/conf/ssl.key . /usr/local/apache2/bin/apachectl -k startssl Apache 2.2 では startssl ではなく単に start とします。 これで一応できますが,ちゃんとした証明書が欲しいところです。 ここでは [[CAcert:http://www.cacert.org/]] という無料のCAで証明書を取得することにします。 上記の証明書でもいいのですが,最初からやってみます。 cd /etc/httpd/conf # Vineなら/etc/apache2/conf /usr/bin/openssl genrsa 1024 > ssl.key/server.key /usr/bin/openssl req -new -key ssl.key/server.key -out ssl.csr/server.csr いろいろ聞いてきます(実際にCAcertで使われるのはCommon Nameだけ): Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Mie Locality Name (eg, city) []:Tsu Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mie University Organizational Unit Name (eg, section) []:Okumura Lab Common Name (eg, YOUR name) []:oku.edu.mie-u.ac.jp Email Address []:root@oku.edu.mie-u.ac.jp 残りはすべてEnterだけ。 この server.csr を [[CAcert:http://www.cacert.org/]] に送れば無料で証明書を発行してもらえますので,それを ssl.crt/server.crt にしてApacheを再起動します。 別の手段として,自己署名証明書を作ってしまうことも考えられます。 もともとの server.crt も自己証明証明書ですが,名前等が正しくないので,次のように打ち込んで,名前等を直すことができます。 openssl req -new -key ../ssl.key/server.key -x509 -days 365 -out server.crt **WebDAV [#p7964285] WebDAV は HTTP 上に構築された次世代のファイル共有プロトコルです。 .Mac の iDisk も AFS から WebDAV ベースに変更されました。 Apache 2 では ./configure に --enable-dav=yes を付けていれば,httpd.conf に次を追加するだけで WebDAV が使えます。 <Location /dav> DAV on </Location> DAVLockDB /usr/local/apache2/var/DAVLock /usr/local/apache2/htdocs/dav と /usr/local/apache2/var/ はユーザ www が書き込めるようにしておきます。 後者のディレクトリにはロックファイル DAVLock.dir,DAVLock.pag が入ります。 これで,Mac OS X なら Finder で「移動」→「サーバへ接続」で http://サーバ名/dav とすればつながります。 サーバ上の場所は /usr/local/apache2/htdocs/dav になります。 これが嫌なら次のようにして別の場所を指定できます。 Alias /dav /path/to/somewhere これだけでは誰でもアップロード/ダウンロードできてしまいますので,例えば次のようにダイジェスト認証を設定します。 <Location /dav> DAV on AuthType Digest AuthName "DAV" AuthDigestFile /path/to/somefile Require valid-user </Location> /usr/local/apache2/bin/htdigest -c /path/to/somefile DAV someuser と打ち込むと someuser さんのパスワードを聞いてきますので,2回打ち込みます。 これで Mac OS X なら日本語ファイル名(utf-8)を含め何の問題もないようです。 ドラッグ&ドロップやダブルクリックができます。 /Volumes/dav にマウントされますので,Emacs などでもローカルファイルと同じように編集できます。 Windows XP(マイネットワーク→ネットワークプレースを追加する)ではいろいろトラブルが生じるとのことです。 UNIX互換OSのコマンドラインで使えるクライアント [[cadaver:http://www.webdav.org/cadaver/]] があります。 ちょうど ftp コマンドのように使えて便利です。 ***参考サイト [#la3a4280] -[[WebDAV Resources:http://www.webdav.org/]] -[[WebDAV Resources JP:http://webdav.todo.gr.jp/]] (ここで配布されている mod_encoding を使うと Windows から日本語ファイル名が使えるようになります) **個人ごとのサイトがうまく公開できないとき [#r78e75e6] 個人のホームディレクトリに public_html ディレクトリを作り,その中に index.html を入れてうまくいかない場合は,たいていホームディレクトリのパーミッションが悪いのでしょう。 700ではうまくいきません。 少なくとも 701 にしておく必要があります。 これ以外に,SELinuxが設定されている場合は, restorecon -R /home それでも駄目なら chcon -R -h -t httpd_sys_content_t /home のようなことをする必要があるかもしれません。 あと,suEXECがオンになっている最近の設定で,番号の低いグループでCGIが動かないといったトラブルが発生するようです。suEXECをオフにするには,/usr/sbin/suexec を別の名前に変えて,apachectl restart します。Vine Linux 4.* では /usr/lib/apache2/suexec を削除またはリネームして /usr/sbin/apache2ctl restart します。これをしても,apt-get で更新した際にまた入ってしまうことがあり,注意を要します。 *** 参考サイト [#t433b7c3] http://www.srvjp.net/?cx=003329386177465831517%3Ajdvs2yb580y&q=apache&sa=Search&cof=FORID%3A9#990
タイムスタンプを変更しない
*Apache 2 [#r5421e34] 古い [[Apache 1:http://oku.edu.mie-u.ac.jp/~okumura/networking/apache.html]] のページをとりあえず更新したものです。 **News [#n5e427e3] - Apache 2.2.8 が出ました。 **はじめに [#o8455f31] Apache はたいていの Linux などのディストリビューションに入っているはずですので,ソースからコンパイルする必要はありません。 ソースからのコンパイルは,最新版を追い求める人だけお試しください。 **ソースからのコンパイル [#kc55641c] ソースコードは [[The Apache Software Foundation:http://www.apache.org/]] の [[The Apache HTTP Server Project:http://httpd.apache.org/]] で配布されています。ダウンロードは [[適当なミラー:http://httpd.apache.org/download.cgi]] から行いましょう(例えば [[RingServer:http://www.dnsbalance.ring.gr.jp/]] の [[/pub/net/apache/httpd/:http://www.dnsbalance.ring.gr.jp/pub/net/apache/httpd/]] にもミラーされています)。 Apache にはバージョン 1.x のものと 2.x のものがありますが,ここでは 2.x のもの(httpd-2.X.YY.tar.gz といったファイル名)を使います。 すでに古い Apache がインストールされているなら消しておきます。 /etc/rc.d/init.d/httpd stop rpm -e apache mod_ssl あらかじめユーザ www,グループ www を作っておきます(どんな名前でもかまいません。 最近の Vine Linux では apache/apache というユーザ/グループがあるようですのでそれを流用するのがいいでしょう)。 :/etc/passwd|www:x:98:98:www:/:/bin/false :/etc/group|www:x:98: Vine Linux 4.1では apt-get install openssl-devel しておきます。 まずソースを展開してコンパイルします。 後で PHP を使うために Dynamic Shared Object の設定 --enable-so をしておきます。 cd httpd-2.2.4 CFLAGS="-O2" ./configure --enable-so --enable-auth-digest --enable-dav --enable-ssl --enable-rewrite make make install デフォルトのインストール場所は /usr/local/apache2 以下になります(Apache 1.x では /usr/local/apache でした)。 場所を変えるには configure に --prefix=/opt/local/apache2 のようなオプションを付けます。 **httpd.conf の設定 [#i65396f0] 次に,/usr/local/apache2/conf にある httpd.conf を編集します。 User daemon Group daemon となっているところは,前にも書いたように,できれば www あるいは apache といったユーザ/グループを作って, User www Group www などとします。 ServerAdmin は適当なメールアドレスにします。 例えば ServerAdmin webmaster@example.ac.jp として,webmaster を管理人の別名として登録するといいでしょう。 ServerName はホスト名です。たとえば ServerName www.example.ac.jp:80 とします。 実験的に自分のマシンで動かすなら 127.0.0.1 でもかまいません。 <Directory "/usr/local/apache2/htdocs"> から </Directory> の中で一般的な設定をします。最初は Options Indexes FollowSymLinks AllowOverride None となっていますが,自由度を最大限に上げるには Options All AllowOverride All とします。 All に加えて MultiViews オプションも付けると content negotiation を自動で行いますが,パフォーマンスはかなり落ちます。 この用途には .var ファイルを使うほうがいいでしょう。 AllowOverride を All にするのは,後で .htaccess で自由に設定を変えるためです。 次の DirectoryIndex index.html となっているところは,たとえば DirectoryIndex index.html index.htm index.php index.cgi index.pl index.rb index.html.var といった具合にすると,index.html 以外のファイル名でも省略できるので,便利です。 <FilesMatch "^\.ht"> Order allow,deny Deny from all </FilesMatch> は見せないファイルの設定です。同様に <FilesMatch "~$"> Order allow,deny Deny from all </FilesMatch> などとしておくとEmacsのバックアップファイルが見えてしまうことを防ぎます。 CustomLog logs/access_log common をコメントアウトして,代わりに CustomLog logs/access_log combined とするとログファイルにuser agentやrefererの情報も入ります。 MIME type の不明なバイナリファイルがブラウザに表示されてしまうことを防ぐために DefaultType text/plain を DefaultType application/octet-stream にしておくといいかもしれません(場合によります)。 CGIを使うなら, #AddHandler cgi-script .cgi は,コメントを外して,ついでに Perl や Ruby のために次のようにしておくと便利です。 AddHandler cgi-script .cgi .pl .rb PHP を使うなら,PHP インストール時に httpd.conf が書き換えられて次のいずれかの行が追加されるはずです。 LoadModule php4_module modules/libphp4.so LoadModule php5_module modules/libphp5.so さらに次の2行がなければ追加しておきます。 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 言語関係は 2.2 では extra/httpd-languages.conf に移りました。 ここでは LanguagePriority リストの先頭に ja を持っていきます。 なお,古い Apache では次の行がありましたが,これはコメントアウトしておかないと文字化けが起こります。 AddDefaultCharset ISO-8859-1 **実行 [#jfe0991b] 起動,終了,再起動はそれぞれ /usr/local/apache2/bin/apachectl -k start /usr/local/apache2/bin/apachectl -k graceful-stop /usr/local/apache2/bin/apachectl -k graceful です。 /etc/rc.d/rc.local の下のほうに /usr/local/apache2/bin/apachectl -k start と書いておいてもいいのですが,今のVineなどRed Hat系の方式では次のようにします。 cp build/rpm/httpd.init /etc/rc.d/init.d/httpd ここで /etc/rc.d/init.d/httpd の中のパス名を適宜直します。例えば httpd.pid は /usr/local/apache2/logs の中に入ります。 /sbin/chkconfig --level 345 httpd on /etc/rc.d/init.d/httpd start /etc/logrotate.d/apache2 は /var/log/httpd と /var/run を /usr/local/apache2/logs に直しておきます。 **SSL [#m73dd07e] SSL対応にするには,configure に --enable-ssl を付けます。 openssl,openssl-devel がインストールされていなければなりません。 cd /usr/local/apache2/conf ln -s /etc/httpd/conf/ssl.crt . ln -s /etc/httpd/conf/ssl.key . /usr/local/apache2/bin/apachectl -k startssl Apache 2.2 では startssl ではなく単に start とします。 これで一応できますが,ちゃんとした証明書が欲しいところです。 ここでは [[CAcert:http://www.cacert.org/]] という無料のCAで証明書を取得することにします。 上記の証明書でもいいのですが,最初からやってみます。 cd /etc/httpd/conf # Vineなら/etc/apache2/conf /usr/bin/openssl genrsa 1024 > ssl.key/server.key /usr/bin/openssl req -new -key ssl.key/server.key -out ssl.csr/server.csr いろいろ聞いてきます(実際にCAcertで使われるのはCommon Nameだけ): Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Mie Locality Name (eg, city) []:Tsu Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mie University Organizational Unit Name (eg, section) []:Okumura Lab Common Name (eg, YOUR name) []:oku.edu.mie-u.ac.jp Email Address []:root@oku.edu.mie-u.ac.jp 残りはすべてEnterだけ。 この server.csr を [[CAcert:http://www.cacert.org/]] に送れば無料で証明書を発行してもらえますので,それを ssl.crt/server.crt にしてApacheを再起動します。 別の手段として,自己署名証明書を作ってしまうことも考えられます。 もともとの server.crt も自己証明証明書ですが,名前等が正しくないので,次のように打ち込んで,名前等を直すことができます。 openssl req -new -key ../ssl.key/server.key -x509 -days 365 -out server.crt **WebDAV [#p7964285] WebDAV は HTTP 上に構築された次世代のファイル共有プロトコルです。 .Mac の iDisk も AFS から WebDAV ベースに変更されました。 Apache 2 では ./configure に --enable-dav=yes を付けていれば,httpd.conf に次を追加するだけで WebDAV が使えます。 <Location /dav> DAV on </Location> DAVLockDB /usr/local/apache2/var/DAVLock /usr/local/apache2/htdocs/dav と /usr/local/apache2/var/ はユーザ www が書き込めるようにしておきます。 後者のディレクトリにはロックファイル DAVLock.dir,DAVLock.pag が入ります。 これで,Mac OS X なら Finder で「移動」→「サーバへ接続」で http://サーバ名/dav とすればつながります。 サーバ上の場所は /usr/local/apache2/htdocs/dav になります。 これが嫌なら次のようにして別の場所を指定できます。 Alias /dav /path/to/somewhere これだけでは誰でもアップロード/ダウンロードできてしまいますので,例えば次のようにダイジェスト認証を設定します。 <Location /dav> DAV on AuthType Digest AuthName "DAV" AuthDigestFile /path/to/somefile Require valid-user </Location> /usr/local/apache2/bin/htdigest -c /path/to/somefile DAV someuser と打ち込むと someuser さんのパスワードを聞いてきますので,2回打ち込みます。 これで Mac OS X なら日本語ファイル名(utf-8)を含め何の問題もないようです。 ドラッグ&ドロップやダブルクリックができます。 /Volumes/dav にマウントされますので,Emacs などでもローカルファイルと同じように編集できます。 Windows XP(マイネットワーク→ネットワークプレースを追加する)ではいろいろトラブルが生じるとのことです。 UNIX互換OSのコマンドラインで使えるクライアント [[cadaver:http://www.webdav.org/cadaver/]] があります。 ちょうど ftp コマンドのように使えて便利です。 ***参考サイト [#la3a4280] -[[WebDAV Resources:http://www.webdav.org/]] -[[WebDAV Resources JP:http://webdav.todo.gr.jp/]] (ここで配布されている mod_encoding を使うと Windows から日本語ファイル名が使えるようになります) **個人ごとのサイトがうまく公開できないとき [#r78e75e6] 個人のホームディレクトリに public_html ディレクトリを作り,その中に index.html を入れてうまくいかない場合は,たいていホームディレクトリのパーミッションが悪いのでしょう。 700ではうまくいきません。 少なくとも 701 にしておく必要があります。 これ以外に,SELinuxが設定されている場合は, restorecon -R /home それでも駄目なら chcon -R -h -t httpd_sys_content_t /home のようなことをする必要があるかもしれません。 あと,suEXECがオンになっている最近の設定で,番号の低いグループでCGIが動かないといったトラブルが発生するようです。suEXECをオフにするには,/usr/sbin/suexec を別の名前に変えて,apachectl restart します。Vine Linux 4.* では /usr/lib/apache2/suexec を削除またはリネームして /usr/sbin/apache2ctl restart します。これをしても,apt-get で更新した際にまた入ってしまうことがあり,注意を要します。 *** 参考サイト [#t433b7c3] http://www.srvjp.net/?cx=003329386177465831517%3Ajdvs2yb580y&q=apache&sa=Search&cof=FORID%3A9#990
テキスト整形のルールを表示する